﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Osiptel.HECO.BE;
using System.Data.OracleClient;
using System.Data;

namespace Osiptel.HECO.DL
{
    public class UsuarioDL
    {
        public UsuarioBE Obtener(int pIDUsuario)
        {
            try
            {
                using (OracleCommand cmd = new OracleCommand())
                {
                    cmd.CommandText = "ACCESO.PKG_ACCESO.SP_OBTENER_USUARIO";
                    cmd.CommandType = System.Data.CommandType.StoredProcedure;

                    OracleParameter prm1 = new OracleParameter("sUsuario", OracleType.Int32);
                    OracleParameter prm2 = new OracleParameter("oListado", OracleType.Cursor);
                    prm1.Direction = ParameterDirection.Input;
                    prm2.Direction = ParameterDirection.Output;
                    prm1.Value = pIDUsuario;
                    cmd.Parameters.Add(prm1);
                    cmd.Parameters.Add(prm2);

                    using (DL_CONEXION NewDL_CONEXION = new DL_CONEXION())
                    {
                        try
                        {
                            NewDL_CONEXION.retOpen();
                            cmd.Connection = NewDL_CONEXION.retConexion();
                            UsuarioBE objUsuarioBE = new UsuarioBE();
                            using (OracleDataReader oRead = cmd.ExecuteReader())
                            {
                                if (oRead.Read())
                                {
                                    objUsuarioBE.IdUsuario = (System.Int32)oRead.GetValue(oRead.GetOrdinal("idusuario"));
                                    objUsuarioBE.Login = (System.String)oRead.GetValue(oRead.GetOrdinal("login"));
                                    objUsuarioBE.Nombres = (System.String)oRead.GetValue(oRead.GetOrdinal("nombres"));
                                    objUsuarioBE.ApellidoPaterno = (System.String)oRead.GetValue(oRead.GetOrdinal("apellidopaterno"));
                                    objUsuarioBE.ApellidoMaterno = (System.String)oRead.GetValue(oRead.GetOrdinal("apellidomaterno"));
                                    objUsuarioBE.Descripcion = (System.String)oRead.GetValue(oRead.GetOrdinal("descripcion"));
                                    objUsuarioBE.AdEstado = (System.String)oRead.GetValue(oRead.GetOrdinal("adestado"));
                                    
                                }
                                oRead.Close();
                            }
                            NewDL_CONEXION.retClose();
                            return objUsuarioBE;
                        }
                        catch (Exception ex)
                        {
                            throw ex;
                        }

                        finally
                        {
                            if (NewDL_CONEXION.conexion.State == ConnectionState.Open) NewDL_CONEXION.retClose();

                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public List<UsuarioBE> FListarUsuario()
        {
            using (DL_CONEXION NewConexion = new DL_CONEXION())
            {
                try
                {
                    NewConexion.retOpen();
                    OracleCommand cmd = NewConexion.retConexion().CreateCommand();
                    cmd.CommandText = "PKG_HECO_ACCESO.SP_LISTAR_USUARIO";
                    cmd.CommandType = CommandType.StoredProcedure;

                    OracleParameter prm = new OracleParameter("oListado", OracleType.Cursor);
                    prm.Direction = ParameterDirection.Output;
                    cmd.Parameters.Add(prm);    
                    //cmd.Connection = NewConexion.retConexion();
                    UsuarioBE objConsultaBE;
                    List<UsuarioBE> llstConsultaBE = new List<UsuarioBE>();
                    using (OracleDataReader objDRConsulta = cmd.ExecuteReader())
                    {
                        while (objDRConsulta.Read())
                        {
                            objConsultaBE = new UsuarioBE();
                            objConsultaBE.IdUsuario = Convert.ToInt32(objDRConsulta["idusuario"]);
                            objConsultaBE.Login = Convert.ToString(objDRConsulta["login"]);
                            objConsultaBE.Nombres = Convert.ToString(objDRConsulta["nombres"]);
                                    
                            llstConsultaBE.Add(objConsultaBE);
                        }
                        objDRConsulta.Close();
                    }
                    NewConexion.retClose();
                    return llstConsultaBE;
                }
                catch (Exception ex)
                {
                    string error = ex.ToString();
                    List<UsuarioBE> llstConsultaBE = new List<UsuarioBE>();
                    return llstConsultaBE;
                }
                finally
                {
                    if (NewConexion.conexion.State == ConnectionState.Open) NewConexion.retClose();
                }
            }
                
           
        }
    }
}
